<?php
/**
 * Smarty plugin
 * @package Smarty
 * @subpackage plugins
 */

/**
 * Handle insert tags
 *
 * @param array $args
 * @return string
 */
function smarty_core_run_insert_handler($params, &$smarty) {
	
	require_once (SMARTY_CORE_DIR . 'core.get_microtime.php');
	if ($smarty->debugging) {
		$_params = array ();
		$_debug_start_time = smarty_core_get_microtime ( $_params, $smarty );
	}
	
	if ($smarty->caching) {
		$_arg_string = serialize ( $params ['args'] );
		$_name = $params ['args'] ['name'];
		if (! isset ( $smarty->_cache_info ['insert_tags'] [$_name] )) {
			$smarty->_cache_info ['insert_tags'] [$_name] = array ('insert', $_name, $smarty->_plugins ['insert'] [$_name] [1], $smarty->_plugins ['insert'] [$_name] [2], ! empty ( $params ['args'] ['script'] ) ? true : false );
		}
		return $smarty->_smarty_md5 . "{insert_cache $_arg_string}" . $smarty->_smarty_md5;
	} else {
		if (isset ( $params ['args'] ['script'] )) {
			$_params = array ('resource_name' => $smarty->_dequote ( $params ['args'] ['script'] ) );
			require_once (SMARTY_CORE_DIR . 'core.get_php_resource.php');
			if (! smarty_core_get_php_resource ( $_params, $smarty )) {
				return false;
			}
			
			if ($_params ['resource_type'] == 'file') {
				$smarty->_include ( $_params ['php_resource'], true );
			} else {
				$smarty->_eval ( $_params ['php_resource'] );
			}
			unset ( $params ['args'] ['script'] );
		}
		
		$_funcname = $smarty->_plugins ['insert'] [$params ['args'] ['name']] [0];
		$_content = $_funcname ( $params ['args'], $smarty );
		if ($smarty->debugging) {
			$_params = array ();
			require_once (SMARTY_CORE_DIR . 'core.get_microtime.php');
			$smarty->_smarty_debug_info [] = array ('type' => 'insert', 'filename' => 'insert_' . $params ['args'] ['name'], 'depth' => $smarty->_inclusion_depth, 'exec_time' => smarty_core_get_microtime ( $_params, $smarty ) - $_debug_start_time );
		}
		
		if (! empty ( $params ['args'] ["assign"] )) {
			$smarty->assign ( $params ['args'] ["assign"], $_content );
		} else {
			return $_content;
		}
	}
}

/* vim: set expandtab: */

?>
